iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

資料客製化(Customizing Data):
在vue定義資料時進行客製化的處理,這使得可以在設定或獲取資料之前進行轉換或驗證。這樣可以保持資料的一致性和正確性。
1. 自定義組合變數(computed):
computed 是一個 Vue 實例的屬性,用於設置一個「計算屬性」,它可以基於現有的資料屬性進行計算,並返回一個新的值。
範例如下:
Html:

<div id="app">
  <p>半徑: {{ radius }}</p>
  <p>面積: {{ area }}</p>
</div>

Js:

new Vue({
  el: '#app',
  data: {
    radius: 5
  },
  computed: {
    area: function() {
      return Math.PI * Math.pow(this.radius, 2);
    }
  }
});

呈現畫面:
https://ithelp.ithome.com.tw/upload/images/20231005/20163036JRTwrtLHs8.png
在這個例子中,我們有一個 radius =5,以及一個 area 的計算屬性,會根據radius計算圓的面積。
當 radius 改變時,area 會自動重新計算。

2. get/set方法:
建立具有資料雙向綁定特性的自定義組合變數。
get方法:定義變數的計算
set方法: 為一種反向計算處理。
在 Vue.js 中,使用 set 方法時,可以透過一個值來更新多個相依的資料屬性,這就是所謂的反向計算處理。
範例如下:
Html:

<div id="app">
    <input type="text" v-model="fullName"> <!-- 用 v-model 雙向綁定計算屬性 -->
    <p>First Name: {{ firstName }}</p>
    <p>Last Name: {{ lastName }}</p>
    <p>Full Name: {{ fullName }}</p>
  </div>

Js:

new Vue({
  el: '#app',
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: {
      get: function() {
        return this.firstName + ' ' + this.lastName;
      },
      set: function(value) {
        const names = value.split(' ');
        this.firstName = names[0];
        this.lastName = names[names.length - 1];
      }
    }
  }
});

呈現畫面:
https://ithelp.ithome.com.tw/upload/images/20231005/20163036hhXo6kcz12.png

範例中使用了 v-model 指令來實現雙向綁定,這樣當你在輸入框中輸入完整名字時,會同時更新 firstName 和 lastName 的值。
另外在畫面中顯示了 firstName、lastName 和 fullName 這三個資料屬性的值,讓你可以在畫面上看到計算屬性的效果。


上一篇
Day19 v-on
下一篇
Day21 監聽match
系列文
學習網頁前端基本的技術,包含如何使用HTML標籤跟CSS做出基本的網頁版型,了解bootstrap template如何建置網頁架構。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言